import logging
import os
from datetime import datetime

def setup_logger():
    # 创建logs目录（若不存在）
    log_dir = 'logs'
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
    
    # 定义更详细的日志格式（包含时间、级别、模块、行号和消息）
    formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(module)s:%(lineno)d - %(message)s')
    
    # 生成日期戳（年-月-日），每天一个日志文件
    date_str = datetime.now().strftime('%Y-%m-%d')
    
    # 创建Logger实例（避免重复初始化）
    logger = logging.getLogger('app_logger')
    logger.setLevel(logging.DEBUG)  # 接收所有级别日志（处理器可单独控制）
    
    # 清除已有处理器（防止重复添加）
    if logger.handlers:
        for handler in logger.handlers[:]:
            logger.removeHandler(handler)
            handler.close()
    
    # 文件处理器（每天一个文件，UTF-8编码防乱码）
    file_handler = logging.FileHandler(
        os.path.join(log_dir, f'app_{date_str}.log'),
        mode='a',
        encoding='utf-8'
    )
    file_handler.setLevel(logging.INFO)  # 文件记录INFO及以上
    file_handler.setFormatter(formatter)
    
    # 控制台处理器（记录DEBUG及以上，方便开发调试）
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.DEBUG)
    console_handler.setFormatter(formatter)
    
    # 绑定处理器
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)
    
    return logger

# 初始化全局Logger
logger = setup_logger()